// index.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
const api = require('../../utils/api');
const util = require('../../utils/util'); // 引入util工具类

// 山东劳动职业技术学院官网首页
const app = getApp();
const auth = require('../../utils/auth');

Page({
  data: {
    motto: 'Hello World',
    userInfo: {
      avatarUrl: defaultAvatarUrl,
      nickName: '',
    },
    hasUserInfo: false,
    canIUseGetUserProfile: wx.canIUse('getUserProfile'),
    canIUseNicknameComp: wx.canIUse('input.type.nickname'),
    
    // 轮播图配置
    swiperCurrent: 0,
    banners: [
      { id: 1, url: '/static/images/banner1.png', title: '学院举行2023年春季运动会' },
      { id: 2, url: '/static/images/banner2.png', title: '学院召开2023年教学工作会议' },
      { id: 3, url: '/static/images/banner3.png', title: '学院开展"劳动文化月"活动' }
    ],
    indicatorDots: true,
    autoplay: true,
    interval: 3000,
    duration: 500,
    
    // 学院新闻
    news: [], // 初始化为空数组，数据将从API获取
    
    // 专业介绍
    majors: [
      { id: 1, name: '计算机应用技术', icon: 'computer' },
      { id: 2, name: '机电一体化技术', icon: 'machine' },
      { id: 3, name: '会计', icon: 'finance' },
      { id: 4, name: '电子商务', icon: 'business' },
      { id: 5, name: '建筑工程技术', icon: 'building' },
      { id: 6, name: '汽车检测与维修技术', icon: 'car' }
    ],
    
    // 快速入口
    quickEntries: [
      { id: 1, name: '招生就业', icon: 'enroll' },
      { id: 2, name: '教务系统', icon: 'education' },
      { id: 3, name: '学生工作', icon: 'student' },
      { id: 4, name: '校园风采', icon: 'campus' }
    ],
    
    // 动画效果
    animationData: {},
    
    // 是否已登录
    isLogin: false,
    
    // 学院简介
    aboutContent: '',
  },
  bindViewTap() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail
    const { nickName } = this.data.userInfo
    this.setData({
      "userInfo.avatarUrl": avatarUrl,
      hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
    })
  },
  onInputChange(e) {
    const nickName = e.detail.value
    const { avatarUrl } = this.data.userInfo
    this.setData({
      "userInfo.nickName": nickName,
      hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
    })
  },
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  onLoad() {
    // 页面加载时执行
    this.initAnimation();
    this.fetchCollegeIntroduction();
    this.fetchNewsList(); // 调用新的方法获取新闻列表
    console.log('index.js onLoad: 页面加载完成');
  },
  
  fetchCollegeIntroduction() {
    api.getCollegeInfo('introduction').then(res => {
      // res现在直接就是后端返回的数据数组，而不是一个包含data属性的对象
      const info = res && res[0] ? res[0] : {};
      this.setData({
        aboutContent: info.content || '',
        motto: info.title || ''
      });
      console.log('学院简介信息已设置:', this.data.aboutContent, this.data.motto);
    }).catch(err => {
      // 添加错误处理，以便调试
      console.error('获取学院信息失败:', err);
      wx.showToast({
        title: '获取学院信息失败',
        icon: 'none'
      });
    });
  },
  
  fetchNewsList() {
    api.getLatestNews().then(res => {
      // 格式化日期
      const formattedNews = res.map(item => ({
        ...item,
        date: util.formatDateToYYYYMMDD(item.date)
      }));
      this.setData({
        news: formattedNews // 假设res直接是新闻列表数组
      });
      console.log('新闻列表已设置:', this.data.news);
    }).catch(err => {
      console.error('获取新闻列表失败:', err);
      wx.showToast({
        title: '获取新闻列表失败',
        icon: 'none'
      });
    });
  },
  
  onShow() {
    // 页面显示时执行动画
    this.startAnimation();
    
    // 检查登录状态
    const isLogin = auth.isLoggedIn();
    this.setData({ isLogin });
    console.log('index.js onShow: 登录状态为', this.data.isLogin);
  },
  
  // 初始化动画
  initAnimation() {
    // 创建动画实例
    this.animation = wx.createAnimation({
      duration: 1000,
      timingFunction: 'ease',
    });
  },
  
  // 开始动画
  startAnimation() {
    // 标题栏动画
    this.animation.opacity(0).translateY(-20).step({ duration: 0 });
    this.animation.opacity(1).translateY(0).step({ duration: 800 });
    this.setData({
      animationData: this.animation.export()
    });
  },
  
  // 轮播图切换事件
  swiperChange(e) {
    this.setData({
      swiperCurrent: e.detail.current
    });
  },
  
  // 点击轮播图
  bannerClick(e) {
    const id = e.currentTarget.dataset.id;
    console.log('bannerClick: 当前登录状态', this.data.isLogin);
    
    // 直接检查登录状态
    if (this.data.isLogin) {
      console.log('bannerClick: 已登录，尝试跳转到新闻详情', `/pages/news/detail/detail?id=${id}&type=banner`);
      // 已登录，直接跳转
      wx.navigateTo({
        url: `/pages/news/detail/detail?id=${id}&type=banner`
      });
    } else {
      console.log('bannerClick: 未登录，显示登录提示');
      // 未登录，显示登录提示
      wx.showModal({
        title: '提示',
        content: '您需要登录后才能查看详情',
        confirmText: '去登录',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            console.log('bannerClick: 用户点击"去登录"');
            wx.navigateTo({
              url: '/pages/user/login'
            });
          } else {
            console.log('bannerClick: 用户点击"取消"');
          }
        }
      });
    }
  },
  
  // 点击新闻
  newsClick(e) {
    const id = e.currentTarget.dataset.id;
    console.log('newsClick: 当前登录状态', this.data.isLogin);
    
    // 直接检查登录状态
    if (this.data.isLogin) {
      console.log('newsClick: 已登录，尝试跳转到新闻详情', `/pages/news/detail/detail?id=${id}&type=news`);
      // 已登录，直接跳转
      wx.navigateTo({
        url: `/pages/news/detail/detail?id=${id}&type=news`
      });
    } else {
      console.log('newsClick: 未登录，显示登录提示');
      // 未登录，显示登录提示
      wx.showModal({
        title: '提示',
        content: '您需要登录后才能查看详情',
        confirmText: '去登录',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            console.log('newsClick: 用户点击"去登录"');
            wx.navigateTo({
              url: '/pages/user/login'
            });
          } else {
            console.log('newsClick: 用户点击"取消"');
          }
        }
      });
    }
  },
  
  // 点击专业
  majorClick(e) {
    const id = e.currentTarget.dataset.id;
    console.log('majorClick: 当前登录状态', this.data.isLogin);
    
    // 直接检查登录状态
    if (this.data.isLogin) {
      console.log('majorClick: 已登录，尝试跳转到专业详情', `/pages/major/detail?id=${id}`);
      // 已登录，直接跳转
      wx.navigateTo({
        url: `/pages/major/detail?id=${id}`
      });
    } else {
      console.log('majorClick: 未登录，显示登录提示');
      // 未登录，显示登录提示
      wx.showModal({
        title: '提示',
        content: '您需要登录后才能查看详情',
        confirmText: '去登录',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            console.log('majorClick: 用户点击"去登录"');
            wx.navigateTo({
              url: '/pages/user/login'
            });
          } else {
            console.log('majorClick: 用户点击"取消"');
          }
        }
      });
    }
  },
  
  // 点击快速入口
  entryClick(e) {
    const id = e.currentTarget.dataset.id;
    console.log('entryClick: 当前登录状态', this.data.isLogin);
    
    // 直接检查登录状态
    if (this.data.isLogin) {
      console.log('entryClick: 已登录，根据ID跳转到相应页面', id);
      // 已登录，根据ID跳转到相应页面
      switch(id) {
        case 1: // 招生就业
          wx.navigateTo({
            url: '/pages/enrollment/index'
          });
          break;
        case 2: // 教务系统
          wx.navigateTo({
            url: '/pages/education/index'
          });
          break;
        case 3: // 学生工作
          wx.navigateTo({
            url: '/pages/student/index'
          });
          break;
        case 4: // 校园风采
          wx.navigateTo({
            url: '/pages/campus/index'
          });
          break;
      }
    } else {
      console.log('entryClick: 未登录，显示登录提示');
      // 未登录，显示登录提示
      wx.showModal({
        title: '提示',
        content: '您需要登录后才能访问此功能',
        confirmText: '去登录',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            console.log('entryClick: 用户点击"去登录"');
            wx.navigateTo({
              url: '/pages/user/login'
            });
          } else {
            console.log('entryClick: 用户点击"取消"');
          }
        }
      });
    }
  },
  
  // 下拉刷新
  onPullDownRefresh() {
    // 模拟刷新数据
    setTimeout(() => {
      wx.stopPullDownRefresh();
      wx.showToast({
        title: '刷新成功',
        icon: 'success',
        duration: 1500
      });
    }, 1500);
  }
})
